package com.xiaowu.house.house.service;

import com.xiaowu.house.domain.dto.BasePageDTO;
import com.xiaowu.house.house.domain.dto.*;

import java.util.List;

public interface IHouseService {

    /**
     * 新增或编辑房源
     * @param houseAddOrEditReqDTO 请求DTO
     * @return 房子ID
     */
    Long addOrEdit(HouseAddOrEditReqDTO houseAddOrEditReqDTO);

    /**
     * 查询房源详细信息
     * @param houseId 房源ID
     * @return 房源完整信息
     */
    HouseDTO detail(Long houseId);

    /**
     * 查询房源列表
     * @param houseListReqDTO 房源列表请求DTO
     * @return 房源列表
     */
    BasePageDTO<HouseDescDTO> list(HouseListReqDTO houseListReqDTO);

    /**
     * 更新房源状态
     * @param houseStatusEditReqDTO 房源状态更新请求DTO
     */
    void editStatus(HouseStatusEditReqDTO houseStatusEditReqDTO);

    /**
     * 缓存房源信息
     * @param houseId 房源ID
     */
    void cacheHouse(Long houseId);

    /**
     * 根据房东id查询其下房源id列表
     *
     * @param userId
     * @return
     */
    List<Long> listByUserId(Long userId);

    /**
     * 脚本：刷新全量缓存
     */
    void refreshHouseIds();
}
